<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<title>Allegro Stuff</title>
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- menu -->
	<div id="navmain">
	<ul>
		<li><a href="index.html">Overview</a></li>
		<li><a href="install.html">Installation</a></li>
		<li><a href="config.html">Configurator</a></li>
		<li><a href="animation.html">Animation</a></li>
		<li><a href="framework.html">Framework</a></li>
		<li><a href="tranzam.html">Tutorial</a></li>
	</ul>
	</div>
	<div id="navsub">
	<ul>
		<li><a href="#intro">Introduction</a></li>
		<li><a href="#inter">Linkage</a></li>
		<li><a href="#extern">Dependencies</a></li>
		<li><a href="#where">Where Next</a></li>
	</ul><span class="smallprint">This menu will stay fixed with a proper browser.</span>
	<p>
	 <a href="http://jigsaw.w3.org/css-validator/">
	  <img style="border:0;width:88px;height:31px"
		   src="http://jigsaw.w3.org/css-validator/images/vcss" 
		   alt="Valid CSS!" />
	 </a>
	</p>
	<p>
      <a href="http://validator.w3.org/check?uri=referer"><img
          src="http://www.w3.org/Icons/valid-xhtml10"
          alt="Valid XHTML 1.0!" height="31" width="88" /></a>
    </p>
<p><a href="http://www.bloggerheads.com/bbc/"><img src="http://www.bloggerheads.com/bbc/bbc.gif" width="90" height="45"  
alt="Click here to find out why." /></a></p>
<p><a href="http://retrospec.sgn.net" ><img src="retrospec.gif" width="150" alt="Fine games" /></a></p>
	</div>
<!-- menu -->

	<div id="main">
		<a name="intro"></a>
		<h1>Introduction</h1>
<p>The libraries found here perform the fundamental tasks you need in a game. AXL_FRAMS is a complete framework for games creation. AXL_GRANI is a repository for graphics created from a XML 
file with easy retrieval, a comprehensive Animation system and collision detection. AXL_CONCUR reads/writes custom and allegro configuration values from 
a XML file and starts up Allegro using the values set.</p>
<ul><li><strong>AXL_FRAMS:</strong>
The Framework is a system that performs many tasks and can be ran at various levels. The tasks it can perform for you are :<br /><br />
  <ul>
  <li>Load and store graphics and animation. With a full animation playback system for displaying animations</li>
  <li>Load and store core Allegro and custom variables in an XML configuration file. Allowing easy access to them both and provide a means for 
  determining what Allegro settings need to be applied</li>
  <li>Initialise Allegro using configuration settings supplied and leave the system is a graphical mode</li>
  <li>Run a game in a FPS based loop, requiring no coding other than functions for logic and drawing. There is also no need to create buffers for games as this is handled for you</li>
  <li>Create and manage transparently double buffering, system double buffering (double buffering but using System Bitmaps), Page Flipping, Triple Buffering</li>
  <li>Helper functions such as easy loading of DAT files, pausing, message boxes, etc.</li>
  <li>Complete sound control using the more advanced voice controls, but made even easier than the simple and limited wav playback routines</li>
  </ul>
</ul>
The Animation and Configuration options (the first two bullet points) are handled transparently via AXL_GRANI and AXL_CONCUR. These are described in more detail below. These two modules, although part
of the Framework are independant modules and function just as easily without the Framework. For example, you may wish to just use the Animation module. <br /><br />The Framework 
does not have to be used as a complete FPS based control system, you can use the Framework just to load up and Initialise Allegro providing the code with a graphical mode, access to animations, graphics and 
configuration settings, and exposure to the created buffers (e.g. video, system or memory bitmaps).
<ul><li><strong>AXL_GRANI:</strong>
This is an XML based graphics storage and retrieval repository and animation playback library. 
You store your references to graphics and animations in an XML file and can reference 
them in code by name and retrieve them as memory, system or video bitmaps. The goal was to 
create a powerful but easy to use system. It has the following features:<br /><br />
<ul>
<li>Can use a single file per bitmap or sheet/tiled graphic files (multiple graphics 
within a single file) of which the graphics can can be placed inside a 1 pixel grid if desired 
to make it easier to see</li>
<li>different animation loops (once, repeating, reverse, ping-pong, etc) can be specified</li>
<li>each animation graphic can have different timings between frames</li>
<li>fade in/out animations in any time period</li>
<li>supports up to 5 countdown timers (does not have any timer overhead) for each animation to 
program key triggers, etc.</li>
<li>can automatically create a mask for pixel perfect collision (using PPCOL)</li>
<li>can single step or automatically move between frames</li>
<li>pause/resume animations</li>
<li>graphics are only loaded once even if referenced multiple times</li>
</ul>
<li><strong>Configurator:</strong>
This is an XML solution to store and configure Allegro and your own game variables. 
There are two parts to the XML file. The first stores the core details you need to run any
Allegro program, such as graphics modes, resolutions, sound configurations, FPS, etc. the
second stores custom entries that can be of type integer, string or float. <br />
All settings can be read and saved easily, and if required automatically saved on exiting the 
program.<br />The other purpose is after initialising the configurator (by simply instantiating 
an object) Allegro can be started up and be ready for the user using all the settings supplied.
<br />You can supply a main and fallback window mode, bpp, render mode (triple/paged/double) and
the system will try all permutations until a valid one is found.</li>

<li style="display:none"><strong>Sprite:</strong> <em><strong>NOT INCLUDED. </strong></em>The sprite library is a wrapper for the basic functionality of a sprite. Sprites are stored in 
a linked list (using the Standard Template Library) and can include Animation objects. </li>
<li style="display:none"><strong>Framework:</strong> <em><strong>NOT INCLUDED. </strong></em>Lets you setup, initialise and run a game with minimum code. The framework can work on multiple 
levels. At its simplest (lowest) level it is a series of helper functions and data to simplify coding a game (such as safely 
reading dat files, sound support using the advanced SAMPLE allegro functionality). At the next level it provides a facility to 
initialise allegro to the point of leaving the code in a graphics mode by reading in an XML config file (or can be coded) that 
is used to specify graphics modes (double buffered, triple buffered, depths, etc.), sound capabilities and other information 
(such as FPS) and has functions/data for transparently working with these modes. Finally the framework can be used to manage 
a full game. Within code you supply the name of functions (called hooks) that perform logic and drawing (to a memory/back buffer). Once the game loop is triggered the framework deals with all screen drawing, controls the game time (FPS) and calls all the supplied hooks at the relevant time.</li>
</ul>
<div>
		<a name="inter"></a>
		<h1>Linkage</h1>
<p>Each of the libraries are self-sufficient and can run without the others. However, they can be used together to complement 
and enhance their capabilities. Such as if the framework is included with the animations <span style="display:none">or sprite</span> library they can output 
debugging information to a file.  <span style="display:none">if fblend is included with the animation library then it it used to increase performance for 
the animation fading routines.</span> These are explained further in each section.
</p>
</div>
		<a name="extern"></a>
		<h1>Dependencies</h1>
<ul><li>The framework and animation libraries require the tinyXML library (supplied). This is an ANSI 
compatible (platform independent) library and is used for reading the XML files.</li>
<li style="display:none">The animation library will make use of fblend (Allegro specific blender functions) 
if available. It does not have to be used but will speed up the animation fade routines, 
if used.</li>
</ul>
		<a name="where"></a>
		<h1>Where Next</h1>
No doubt it is the full framework that you plan on using, however because the Animation and Configuration modules can be used standalone, and because they are a large document in themselves, it will be best if you  follow the documents in the order of the menu, i.e. firstly learn about Configurator which will let you see exactly what Allegro features the Framework incorporates and how to set up the XML for starting and using allegro. Secondly learn about the Animation library as this will teach you about the graphics and animation handling that are incorporated into the Framework and show you how to set them up.<br /><br />Once you know these two libraries you should be able to learn about the Framework and not be overwhelmed by the information provided (the Framework document does not contain information on setting up the XML files, for example).</div>
</body>
</html>